import axios from "axios";
import { ElMessage } from "element-plus";
import useUserStore from "@/store/modules/user";
// 第一步利用axios对象的create方法,创建一个axios实例
let request = axios.create({
    // 基础路径
    baseURL: import.meta.env.VITE_APP_BASE_API, //基础路径上会携带/api
    timeout: 5000, //请求超时时间 5s
})
// 第二部：请求拦截器与相应拦截器
// 请求拦截器
request.interceptors.request.use(
    (config) => {
        //config配置对象，headers属性请求头，经常给服务器端携带公共参数
        // 在发送请求之前做些什么
        // 获取token
        let userStore = useUserStore();
        if (userStore.token) {
            config.headers.token = userStore.token;
        }
        return config;
    }
);
// 相应拦截器
request.interceptors.response.use(
    (response) => {
        // 成功回调
        return response.data;
    },
    (error) => {
        // 失败回调
        // 定义一个变量：存储网络错误信息
        let msg = "";
        // 如果为undefined，则说明没有响应，则提示网络异常
        if (!error.response) {
            msg = "网络异常，请检查网络连接";
        }
        // 如果有响应，则根据响应状态码，提示不同的错误信息
        else {
            let status = error.response.status;
            switch (status) {
                case 400:
                    msg = "请求参数错误";
                    break;
                case 401:
                    msg = "未授权，请重新登录";
                    break;
                case 403:
                    msg = "拒绝访问";
                    break;
                case 404:
                    msg = "请求资源不存在";
                    break;
                case 500:
                    msg = "服务器内部错误";
                    break;
                default:
                    msg = "网络异常，请检查网络连接";
                    break;
            }
        }
        // 提示错误信息
        ElMessage.error(msg);
        return Promise.reject(error);

    }
);
export default request
